package cn.edu.buaa.cnsatm.traffic_big_data_server.util;

import java.io.IOException;
import java.sql.*;

/**
 * @author:  LX&&tianwang
 * @description:用于读取配置，通过JDBC连接数据库
 * @date:2019/10/11
 */
public class JDBCUtil {
    public static Connection databaseConnecttion;//使用postgis进行数据库查询
    public static Connection oracleConnection;//使用oracle进行数据库查询
    public static void startConnection() {
        PropertiesUtil.setProperties();
        String url = PropertiesUtil.properties.getProperty("spring.datasource.url");
        String user = PropertiesUtil.properties.getProperty("spring.datasource.username");
        String password = PropertiesUtil.properties.getProperty("spring.datasource.password");
        try{
            JDBCUtil.databaseConnecttion = DriverManager.getConnection(url, user, password);
            System.out.println("PostGis数据库连接成功");
        }catch (SQLException e){
            e.printStackTrace();
            System.out.println("PostGis数据库连接失败");
        }
    }
    public static void startOracleConnection() {
        PropertiesUtil.setProperties();
        try{
            Class.forName(PropertiesUtil.properties.getProperty("spring.datasource.oracle.driverClassName"));
        }catch (ClassNotFoundException e){
            e.printStackTrace();
            System.out.println("没有找到Oracle连接驱动类");
        }
        String url = PropertiesUtil.properties.getProperty("spring.datasource.oracle.url");
        String user = PropertiesUtil.properties.getProperty("spring.datasource.oracle.username");// 用户名,系统默认的账户名
        String password = PropertiesUtil.properties.getProperty("spring.datasource.oracle.password");// 你安装时选设置的密码
        try{
            JDBCUtil.oracleConnection = DriverManager.getConnection(url, user, password);
            System.out.println("Oracle数据库连接成功");
        }catch (SQLException e){
            e.printStackTrace();
            System.out.println("Oracle数据库连接失败");
        }
    }
    /**
     * @description:这个函数的作用是，拼接oracle的数据表名。Oracle的数据表名组成为“用户名.表名”,然而表名的话，前缀也是不一样的。因此前缀写在了配置文件里面。例如，要查数据库中表名为zhjt_j_tl_jszy的表，该函数则只需要传入j_tl_jszy参数即可。
     * @author:tianwang
     * @date:20191103
     */
    public static String getOracleTableNameWithPrefix(String table_name_without_prefix){
        return PropertiesUtil.properties.getProperty("oracle.user")+"."+PropertiesUtil.properties.getProperty("orocal.table.prefix")+"_"+table_name_without_prefix;
    }
    public static String getOracleTableNameWithoutPrefix(String table_name_with_prefix){
        return PropertiesUtil.properties.getProperty("oracle.user")+"."+table_name_with_prefix;
    }
}
